Traditional workflows comprise two or more applications, typically communicating through a file system or a messaging system. An example might be an application that produces a set of parameters that is periodically updated and made available to any other application that may need these parameters for its computation. One way to implement this is for the producer application to create a file containing the parameters, and for any consumer application that needs the parameters to read the currently available file. This requires the consumer application to poll the file metadata to determine whether the file has been updated since the last time that it accessed that file. A messaging system typically requires a posting queue and readers reading from the queue.
Applications on modern large-scale distributed computer systems are typically constructed using multiple processes. The resources needed by each process, including its memory, are controlled by an operating system. The operating system also has the responsibility for isolating the resources of the processes from other processes, especially those outside its control. As a result, applications resort to the use of messaging techniques in order to communicate between its component processes. Messaging techniques are also used for communication between processes of different applications, though, more commonly, I/O spaces are used for such communication, especially when the communicating applications within the workflow are not concurrent.